package controller

import (
	"github.com/gin-gonic/gin"
	"i18n-template/table"
	"i18n-template/utils"
)

func GenerateArticleController() gin.HandlerFunc {
	return func(context *gin.Context) {
		ar := &table.Article{}
		err := context.ShouldBind(&ar)
		if err != nil {
			utils.FailResponse(context, "绑定数据失败", nil)
			return
		}
		u, _ := context.Get("user")
		ar.Author = u.(*table.Users).Username
		err = ar.GenerateArticle(ar)
		if err != nil {
			utils.FailResponse(context, "创建文章失败!", err.Error())
			return
		}
		utils.SuccessResponse(context, "创建文章成功!", nil)
	}
}

func FindArticleController() gin.HandlerFunc {
	return func(context *gin.Context) {
		lan := context.DefaultQuery("language", "zh")
		title := context.Query("title")
		id := context.Query("id")
		ar := &table.Article{}
		if id != "" {
			article, err := ar.FindArticleByID(id)
			if err != nil {
				utils.FailResponse(context, "该文章不存在", nil)
				return
			}
			utils.SuccessResponse(context, "查询文章成功!", article)
			return
		}
		ars := ar.FindAllArticle(lan, title)
		utils.SuccessResponse(context, "查询成功!", ars)
	}
}

func PatchArticleController() gin.HandlerFunc {
	return func(context *gin.Context) {
		a := &table.Article{}
		err := context.ShouldBind(a)
		if err != nil {
			utils.FailResponse(context, "数据绑定失败", err.Error())
			return
		}
		err = a.PatchArticleByID(a)
		if err != nil {
			utils.FailResponse(context, "更新失败", err.Error())
			return
		}
		utils.SuccessResponse(context, "更新成功!", nil)
	}
}
